/********************************************************************************
 * Copyright (c) 2017-2022 Cirrus Link Solutions and others
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *   Cirrus Link Solutions - initial implementation
 ********************************************************************************/

package org.eclipse.tahu.util;

public class ValidationUtils {

	public static final String JSON_V4_SCHEMA_IDENTIFIER = "http://json-schema.org/draft-04/schema#";
	public static final String JSON_SCHEMA_IDENTIFIER_ELEMENT = "$schema";

//	public static JsonNode getJsonNode(String jsonText) throws IOException {
//		return JsonLoader.fromString(jsonText);
//	} // getJsonNode(text) ends
//
//	public static JsonNode getJsonNode(File jsonFile) throws IOException {
//		return JsonLoader.fromFile(jsonFile);
//	} // getJsonNode(File) ends
//
//	public static JsonNode getJsonNode(URL url) throws IOException {
//		return JsonLoader.fromURL(url);
//	} // getJsonNode(URL) ends
//
//	public static JsonNode getJsonNodeFromResource(String resource) throws IOException {
//		return JsonLoader.fromResource(resource);
//	} // getJsonNode(Resource) ends
//
//	public static JsonSchema getSchemaNode(String schemaText) throws IOException, ProcessingException {
//		final JsonNode schemaNode = getJsonNode(schemaText);
//		return _getSchemaNode(schemaNode);
//	} // getSchemaNode(text) ends
//
//	public static JsonSchema getSchemaNode(File schemaFile) throws IOException, ProcessingException {
//		final JsonNode schemaNode = getJsonNode(schemaFile);
//		return _getSchemaNode(schemaNode);
//	} // getSchemaNode(File) ends
//
//	public static JsonSchema getSchemaNode(URL schemaFile) throws IOException, ProcessingException {
//		final JsonNode schemaNode = getJsonNode(schemaFile);
//		return _getSchemaNode(schemaNode);
//	} // getSchemaNode(URL) ends
//
//	public static JsonSchema getSchemaNodeFromResource(String resource) throws IOException, ProcessingException {
//		final JsonNode schemaNode = getJsonNodeFromResource(resource);
//		return _getSchemaNode(schemaNode);
//	} // getSchemaNode() ends
//
//	public static void validateJson(JsonSchema jsonSchemaNode, JsonNode jsonNode) throws ProcessingException {
//		ProcessingReport report = jsonSchemaNode.validate(jsonNode);
//		if (!report.isSuccess()) {
//			for (ProcessingMessage processingMessage : report) {
//				throw new ProcessingException(processingMessage);
//			}
//		}
//	} // validateJson(Node) ends
//
//	public static boolean isJsonValid(JsonSchema jsonSchemaNode, JsonNode jsonNode) throws ProcessingException {
//		ProcessingReport report = jsonSchemaNode.validate(jsonNode);
//		return report.isSuccess();
//	} // validateJson(Node) ends
//
//	public static boolean isJsonValid(String schemaText, String jsonText) throws ProcessingException, IOException {
//		final JsonSchema schemaNode = getSchemaNode(schemaText);
//		final JsonNode jsonNode = getJsonNode(jsonText);
//		return isJsonValid(schemaNode, jsonNode);
//	} // validateJson(Node) ends
//
//	public static boolean isJsonValid(File schemaFile, File jsonFile) throws ProcessingException, IOException {
//		final JsonSchema schemaNode = getSchemaNode(schemaFile);
//		final JsonNode jsonNode = getJsonNode(jsonFile);
//		return isJsonValid(schemaNode, jsonNode);
//	} // validateJson(Node) ends
//
//	public static boolean isJsonValid(URL schemaURL, URL jsonURL) throws ProcessingException, IOException {
//		final JsonSchema schemaNode = getSchemaNode(schemaURL);
//		final JsonNode jsonNode = getJsonNode(jsonURL);
//		return isJsonValid(schemaNode, jsonNode);
//	} // validateJson(Node) ends
//
//	public static void validateJson(String schemaText, String jsonText) throws IOException, ProcessingException {
//		final JsonSchema schemaNode = getSchemaNode(schemaText);
//		final JsonNode jsonNode = getJsonNode(jsonText);
//		validateJson(schemaNode, jsonNode);
//	} // validateJson(text) ends
//
//	public static void validateJson(File schemaFile, File jsonFile) throws IOException, ProcessingException {
//		final JsonSchema schemaNode = getSchemaNode(schemaFile);
//		final JsonNode jsonNode = getJsonNode(jsonFile);
//		validateJson(schemaNode, jsonNode);
//	} // validateJson(File) ends
//
//	public static void validateJson(URL schemaDocument, URL jsonDocument) throws IOException, ProcessingException {
//		final JsonSchema schemaNode = getSchemaNode(schemaDocument);
//		final JsonNode jsonNode = getJsonNode(jsonDocument);
//		validateJson(schemaNode, jsonNode);
//	} // validateJson(URL) ends
//
//	public static void validateJsonResource(String schemaResource, String jsonResource)
//			throws IOException, ProcessingException {
//		final JsonSchema schemaNode = getSchemaNode(schemaResource);
//		final JsonNode jsonNode = getJsonNodeFromResource(jsonResource);
//		validateJson(schemaNode, jsonNode);
//	} // validateJsonResource() ends
//
//	private static JsonSchema _getSchemaNode(JsonNode jsonNode) throws ProcessingException {
//		final JsonNode schemaIdentifier = jsonNode.get(JSON_SCHEMA_IDENTIFIER_ELEMENT);
//		if (null == schemaIdentifier) {
//			((ObjectNode) jsonNode).put(JSON_SCHEMA_IDENTIFIER_ELEMENT, JSON_V4_SCHEMA_IDENTIFIER);
//		}
//
//		final JsonSchemaFactory factory = JsonSchemaFactory.byDefault();
//		return factory.getJsonSchema(jsonNode);
//	} // _getSchemaNode() ends
}
